Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMORIES_TAG | No | The tag used for marking memories in Roam | #[[LLM/Memories]] |
| ROAM_API_TOKEN | Yes | Your Roam Research API token from graph settings | |
| ROAM_GRAPH_NAME | Yes | The name of your Roam Research graph |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| roam_add_todo | Add a list of todo items as individual blocks to today's daily page in Roam. Each item becomes its own actionable block with todo status. NOTE on Roam-flavored markdown: For direct linking: use [[link]] syntax. For aliased linking, use alias syntax. Do not concatenate words in links/hashtags - correct: #[[multiple words]] #self-esteem (for typically hyphenated words). IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_fetch_page_by_title | Fetch page by title. Returns content in the specified format. |
| roam_create_page | Create a new standalone page in Roam with optional content, including structured outlines and tables, using explicit nesting levels and headings (H1-H3). This is the preferred method for creating a new page with an outline in a single step. Best for:
|
| roam_create_outline | Add a structured outline to an existing page or block (by title text or uid), with customizable nesting levels. To create a new page with an outline, use the
|
| roam_import_markdown | Import nested markdown content into Roam under a specific block. Can locate the parent block by UID (preferred) or by exact string match within a specific page. If a |
| roam_search_for_tag | Search for blocks containing a specific tag. Use |
| roam_search_by_status | Search for blocks with a specific status (TODO/DONE) across all pages or within a specific page. |
| roam_search_block_refs | Search for block references within a page or across the entire graph. Can search for references to a specific block, a page title, or find all block references. |
| roam_search_hierarchy | Search for parent or child blocks in the block hierarchy. Can search up or down the hierarchy from a given block. |
| roam_find_pages_modified_today | Find pages that have been modified today (since midnight), with pagination and sorting options. |
| roam_search_by_text | Search for blocks containing specific text across all pages or within a specific page. Use |
| roam_search_by_date | Search for blocks or pages based on creation or modification dates. Not for daily pages with ordinal date titles. |
| roam_markdown_cheatsheet | Provides the content of the Roam Markdown Cheatsheet resource, optionally concatenated with custom instructions if CUSTOM_INSTRUCTIONS_PATH is set. |
| roam_remember | Add a memory or piece of information to remember, stored on the daily page with ROAM_MEMORIES_TAG tag and optional categories (unless include_memories_tag is false). NOTE on Roam-flavored markdown: For direct linking: use [[link]] syntax. For aliased linking, use alias syntax. Do not concatenate words in links/hashtags - correct: #[[multiple words]] #self-esteem (for typically hyphenated words). IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_recall | Retrieve all stored memories on page titled ROAM_MEMORIES_TAG, or tagged block content with the same name. Returns a combined, deduplicated list of memories. Optionally filter blcoks with a specific tag and sort by creation date. |
| roam_datomic_query | Execute a custom Datomic query on the Roam graph for advanced data retrieval beyond the available search tools. This provides direct access to Roam's query engine. Note: Roam graph is case-sensitive. Optimal Use Cases for
List of some of Roam's data model Namespaces and Attributes: ancestor (descendants), attrs (lookup), block (children, heading, open, order, page, parents, props, refs, string, text-align, uid), children (view-type), create (email, time), descendant (ancestors), edit (email, seen-by, time), entity (attrs), log (id), node (title), page (uid, title), refs (text). Predicates (clojure.string/includes?, clojure.string/starts-with?, clojure.string/ends-with?, <, >, <=, >=, =, not=, !=). Aggregates (distinct, count, sum, max, min, avg, limit). Tips: Use :block/parents for all ancestor levels, :block/children for direct descendants only; combine clojure.string for complex matching, use distinct to deduplicate, leverage Pull patterns for hierarchies, handle case-sensitivity carefully, and chain ancestry rules for multi-level queries. |
| roam_process_batch_actions | RATE LIMIT EFFICIENT: This is the most API-efficient tool for multiple block operations. Combine all create/update/delete operations into a single call whenever possible. For intensive page updates or revisions, prefer this tool over multiple sequential calls. Executes a sequence of low-level block actions (create, update, move, delete) in a single, non-transactional batch. Actions are executed in the provided order. UID Placeholders for Nested Blocks: Use For actions on existing blocks, a valid block UID is required. Note: Roam-flavored markdown, including block embedding with |
| roam_fetch_block_with_children | Fetch a block by its UID along with its hierarchical children down to a specified depth. Returns a nested object structure containing the block's UID, text, order, and an array of its children. |
| roam_create_table | Create a table in Roam with specified headers and rows. This tool abstracts the complex nested structure that Roam tables require, making it much easier to create properly formatted tables. Why use this tool:
Example: A table with headers ["", "Column A", "Column B"] and rows [{label: "Row 1", cells: ["A1", "B1"]}] creates a 2x3 table. IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_move_block | Move a block to a new location (different parent or position). This is a convenience wrapper around |
| roam_update_page_markdown | Update an existing page with new markdown content using smart diff. Preserves block UIDs where possible and generates minimal changes. This is ideal for:
How it works:
IMPORTANT: Before using this tool, ensure that you have loaded into context the 'Roam Markdown Cheatsheet' resource. |
| roam_rename_page | Rename a page by changing its title. Identifies the page by current title or UID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |